﻿
//是否为由数字组成的字符串
function isDigitals(str){
	var check_int=new RegExp("^[1-9][0-9]*$");// 匹配整数
	if(check_int.exec(str)!=null)
		return true;
	else 
		return false;
}

// 验证是否为浮点数（正数）
function isFloat(str){
	var check_float1 =new RegExp("^[1-9]\.[0-9]*$");// 匹配浮点数
	var check_float =new RegExp("^[1-9][0-9]*\.[0-9]*$");// 匹配浮点数
	if(check_float.exec(str)!=null)
		return true;
	else 
		return false;
}

// 是否为固定电话，区号3到4位，号码7到8位 (1)电话号码由数字、"("、")"和"-"构成
// (2)电话号码为3到8位
// (3)如果电话号码中包含有区号，那么区号为三位或四位
// (4)区号用"("、")"或"-"和其他部分隔开
function isTelphone(str){
    var reg=/(^[0-9]{3,4}\-[0-9]{3,8}$)|(^[0-9]{3,8}$)|(^\([0-9]{3,4}\)[0-9]{3,8}$)|(^0{0,1}13[0-9]{9}$)/;
    if (reg.test(str))
		me=true;
    if (!me){
		alert('电话号码有错误');
        return false;
    }
}


// 手机号码验证，验证13系列和158，159几种号码，长度11位
function isMobel(str){
	var reg0 = /^13\d{9}$/;
    var reg1 = /^158\d{8}$/;
    var reg2 = /^159\d{8}$/;
    var my = false;
	
    if (reg0.test(str))
		my=true;
    if (reg1.test(str))
		my=true;
    if (reg2.test(str))
		my=true;
    if (!my){
		alert('对不起，您输入的手机错误。');
        return false;
    }
   	return true;
}

// 验证是否为中文
function isChinese(str){
	var reg=/^[\u0391-\uFFE5]+$/;
	if(reg.test(str))
		return true;
	else
		return false;
}

// 验证是否为qq号码，长度为5－10位
function isQq(str){
	var reg=/^[1-9]\d{4,9}$/;
	if(reg.test(str))
		return true;
	else
		return false;
}

// 验证是否未email
function isEmail(str){
	var reg=/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
	if(reg.test(str))
		return true;
	else
		return false;
}
/**
 * 验证是否为邮编
 * 
 * @param str
 * @return
 * @author zhenglq
 */
function isZipCode(str){
	var reg=/[1-9]\d{5}(?!\d)/;
	if(reg.test(str))
		return true;
	else
		return false;
}

// 验证IP地址
function isIp(str){
	var check=function(v){
		try{
			return (v<=255 && v>=0)
		}catch(x){
			return false;
		}
	}
	var re=str.split(".")
	return (re.length==4)?(check(re[0]) && check(re[1]) && check(re[2]) && check(re[3])):false
}

// 身份证验证
function isIdnum(str){
	var City={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江 ",
			  31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北 ",
			  43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏 ",
			  61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外 "}
	var iSum=0
	var info=""
	if(!/^\d{17}(\d|x)$/i.test(str))
		return false;
	str=str.replace(/x$/i,"a");
	if(City[parseInt(str.substr(0,2))]==null){
		return false;
	}
	sBirthday=str.substr(6,4)+"-"+Number(str.substr(10,2))+"-"+Number(str.substr(12,2));
	var d=new Date(sBirthday.replace(/-/g,"/"))
	if(sBirthday!=(d.getFullYear()+"-"+ (d.getMonth()+1) + "-" + d.getDate())){
		return false;
	}
	for(var i = 17;i>=0;i=(i-1)) 
		iSum += (Math.pow(2,i) % 11) * parseInt(str.charAt(17 - i),11)
	if(iSum%11!=1){
		return false;
	}
	return City[parseInt(str.substr(0,2))]+","+sBirthday+","+(str.substr(16,1)%2?"男":"女")
}

// 验证是否为整数，包括正负数；
function isInt(str){
	var reg=/^(-|\+)?\d+$/;
	if(reg.test(str))
		return true;
	else
		return false;
}

// 是大于0的整数
function isPositiveNum(str){
	var reg=/^\d+$/;
	if(reg.test(str))
		return true;
	else
		return false;
}

// 负整数的验证
function isMinusNum(str){
	var reg=/^-\d+$/;
	if(reg.test(str))
		return true;
	else
		return false;
}

// 判断是否短时间，形如 (13:04:06)
function isTime(str){
	var a = str.match(/^(\d{1,2})(:)?(\d{1,2})\2(\d{1,2})$/);
	if (a == null){
		alert('输入的参数不是时间格式'); return false;
	}
	if (a[1]>24 || a[3]>60 || a[4]>60){
		alert("时间格式不对");
		return false
	}
	return true;
}

// 2.2 短日期，形如 (2003-12-05)
function isDate(str){
	var r = str.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);
	if(r==null)
		return false;
	var d= new Date(r[1], r[3]-1, r[4]);
	return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]);
}

// 2.3 长时间，形如 (2003-12-05 13:04:06)
function isDateTime(str){
	var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/;
	var r = str.match(reg);
	if(r==null)
		return false;
	var d= new Date(r[1], r[3]-1,r[4],r[5],r[6],r[7]);
	return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]&&d.getHours()==r[5]&&d.getMinutes()==r[6]&&d.getSeconds()==r[7]);
}


// 4.1 判断字符全部由a-Z或者是A-Z的字字母组成
function isLetters(str){
	var reg=/[^a-zA-Z]/g;
	if(reg.test(str))
		return true;
	else
		return false;
}

// 4.2 判断字符由字母和数字组成。
function isLetterNum(str){
	var reg=/[^0-9a-zA-Z]/g;
	if(reg.test(str))
		return true;
	else
		return false;
}
 
/*
 * 特殊字符在ASCII码中所表示的范围为32~48，57~65，90~97
 * event.returnValue=false;设置键盘输入主false，则不能在文本框中输入内容
 */ 
function checkInValidChar(e){
//	var keyCode;
//	if(navigator.appName == "Microsoft Internet Explorer"){   
//		keyCode = event.keyCode;   
//    }else{   
//    	keyCode = e.which;   
//    }
//	if ((keyCode > 32 && keyCode < 48) 
//			|| ( keyCode > 57 && keyCode < 65) 
//			|| ( keyCode > 90 && keyCode < 97)) {
//		if(navigator.appName == "Microsoft Internet Explorer"){   
//			event.returnValue = false; 
//	    }else{
//	    	e.preventDefault();
//	    }  
//	} 
} 
/*
 * 数字的ASCII表示范围为 45~57
 */ 
function checkPostalCode(e) { 
	var keyCode;
	if(navigator.appName == "Microsoft Internet Explorer"){   
		keyCode = event.keyCode;   
    }else{   
    	keyCode = e.which;   
    }
	if( keyCode < 45 || keyCode >57 ) { 
		if(navigator.appName == "Microsoft Internet Explorer"){   
			event.returnValue = false; 
	    }else{
	    	e.preventDefault();
	    }
	} 
} 
/*
 * 大写英文字母ASCII表示范围为65~91 小写英文字母ASCII表示范围为97~123
 */ 
function checkEnglish() { 
	var keyCode;
	if(navigator.appName == "Microsoft Internet Explorer"){   
		keyCode = event.keyCode;   
    }else{   
    	keyCode = e.which;   
    }
	if( keyCode < 65 || keyCode > 91 ) { 
		if(navigator.appName == "Microsoft Internet Explorer"){   
			event.returnValue = false; 
	    }else{
	    	e.preventDefault();
	    }  
	} 
} 
